#ifndef NOSAL_DEMOLIB_INITIALIZE_H
#define NOSAL_DEMOLIB_INITIALIZE_H

#include "nosal/demolib/common.h"
#include "nosal/demolib/context.h"

namespace netaos {
namespace nosal {
namespace demo {
namespace lib {

/**
 * @brief Register the Context.
 *
 * @code
 * int main(int argc, char* argv[])
 * {
 *   Context ctx;
 *   RegisterDemoContext(ctx);
 *   ...
 *   UnregisterDemoContext(ctx);
 * }
 * @endcode
 *
 * @param[in] ctx       The context for demolib
 * @returns kOk if registered is successful, otherwise it returns kError.
 */
ReturnValue RegisterContext(const Context &ctx) noexcept;

/**
 * @brief Unregister the Context.
 *
 * @code
 * int main(int argc, char* argv[])
 * {
 *   Context ctx;
 *   RegisterDemoContext(ctx);
 *   ...
 *   UnregisterDemoContext(ctx);
 * }
 * @endcode
 *
 * @param[in] ctx       The context for demolib
 * @returns kOk if registered is successful, otherwise it returns kError.
 */
ReturnValue UnregisterContext(const Context &ctx) noexcept;

}  // namespace lib
}  // namespace demo
}  // namespace nosal
}  // namespace netaos

#endif  // NOSAL_DEMOLIB_INITIALIZE_H
